package org.example.springbook.controller;


import org.example.springbook.model.UserInfo;
import org.example.springbook.service.BookService;
import org.example.springbook.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpSession;

@RequestMapping("/user")
@RestController
public class UserController {

    @Autowired
    private UserService userService;
    @RequestMapping("/login")
    public boolean login(String userName, String password, HttpSession session) {
        //1.进行参数校验
        //2.验证账号密码是否正确, 正确则登录 不正确则返回false
        if (!StringUtils.hasLength(userName) || !StringUtils.hasLength(password)) {
            return false;
        }
        /**
         * if (userName.equals("admin")){ }  这种写法, 如果userName为null, 会报空指针异常
         * 开发习惯, 养成
         */
        /*if ("admin".equals(userName) && "admin".equals(password)) {
           // 登录成功 存Session
            session.setAttribute("userName", userName);
            return true;
        }*/
        // 上面这个是当时自己编造的数据
        // 而现在我们学了数据库了, 就要从数据库中获取数据了
        // 也是要先进行参数校验, 但是上面已经校验过了 是之前写的代码 就不需要在写了
        //1. 根据用户名查找用户信息, 去数据库中查找 那怎么去数据库中查呢? 就要建立mapper
        // 那么根据用户, 我们就要去创建一个UserInfo类
        //Controller 要调用Service 而此时我们还没有UserService 就要去创建一个

        UserInfo userInfo = userService.getUserInfoByName(userName);
        //2. 对比密码是否正确
        // 那么在拿到数据库里的数据后 我们也可以做以下参数校验
        if (userInfo == null || userInfo.getId() < 0) {
            return false;
        }
        if (password.equals(userInfo.getPassword())) {
            // 密码正确的话 存Session
            session.setAttribute("userName", userName);
            // 通常将UserInfo的密码设置成"" 再给存到Session中去
            userInfo.setPassword("");
            session.setAttribute("session_user_key", userInfo);
            return true;
        }
        return false;
    }

}
